<?php

App::uses('AppController', 'Controller');

/**
 * Documentos Controller
 *
 * @property Documento $Documento
 * @property PaginatorComponent $Paginator
 */
class DocumentosController extends AppController {

    /**
     * Components
     *
     * @var array
     */
    public $components = array('Paginator');
    public $uses = array('Documento', 'Tipo', 'Area', 'Permitido', 'Hojasruta');
    public $layout = 'correspondencia';

    /**
     * index method
     *
     * @return void
     */
    public function index() {
        $this->Documento->recursive = 0;
        $this->set('documentos', $this->Paginator->paginate());
    }

    /**
     * view method
     *
     * @throws NotFoundException
     * @param string $id
     * @return void
     */
    public function view($id = null) {
        if (!$this->Documento->exists($id)) {
            throw new NotFoundException(__('Invalid documento'));
        }
        $options = array('conditions' => array('Documento.' . $this->Documento->primaryKey => $id));
        $this->set('documento', $this->Documento->find('first', $options));
    }

    /**
     * add method
     *
     * @return void
     */
    public function add() {
        if ($this->request->is('post')) {
            $this->Documento->create();
            if ($this->Documento->save($this->request->data)) {
                return $this->flash(__('The documento has been saved.'), array('action' => 'index'));
            }
        }
        $users = $this->Documento->User->find('list');
        $this->set(compact('users'));
    }

    /**
     * edit method
     *
     * @throws NotFoundException
     * @param string $id
     * @return void
     */
    public function edit($id = null) {
        if (!$this->Documento->exists($id)) {
            throw new NotFoundException(__('Invalid documento'));
        }
        if ($this->request->is(array('post', 'put'))) {
            if ($this->Documento->save($this->request->data)) {
                return $this->flash(__('The documento has been saved.'), array('action' => 'index'));
            }
        } else {
            $options = array('conditions' => array('Documento.' . $this->Documento->primaryKey => $id));
            $this->request->data = $this->Documento->find('first', $options);
        }
        $users = $this->Documento->User->find('list');
        $this->set(compact('users'));
    }

    /**
     * delete method
     *
     * @throws NotFoundException
     * @param string $id
     * @return void
     */
    public function deletee($id = null) {
        $this->Documento->id = $id;
        if (!$this->Documento->exists()) {
            throw new NotFoundException(__('Invalid documento'));
        }
        $this->request->onlyAllow('delete');
        if ($this->Documento->delete()) {
            return $this->flash(__('The documento has been deleted.'), array('action' => 'index'));
        } else {
            return $this->flash(__('The documento could not be deleted. Please, try again.'), array('action' => 'index'));
        }
    }
    
     public function delete($id){
        if($this->request->data('post')){
            throw new MethodNotAllowedException();
        }
        if($this->Documento->delete($id)){
            $this->Session->setFlash('Eliminado',msgbueno);
            $this->redirect(array('action'=>'inbox'),null,true);
        }
     }
    
    public function nuevo() {
        
        $idUsuario = $this->Session->read('Auth.User.id');
        $idArea = $this->Session->read('Auth.User.area_id');
        //debug($idArea);die;
        //debug($idUsuario);
        $dct = $this->Tipo->find('all', array(
            'recursive' => -1,'limit'=>15,
            'fields' => array('id', 'nombre')
        ));

        $dcp = $this->Permitido->find('all', array(
            'recursive' => 0,
                //'fields'=>array('id', 'nombre')
        ));
        //debug($dcp);die;

        if ($this->request->is('post')) {
            //debug($this->request->data);      
            $this->request->data['Documento']['user_id'] = $idUsuario;
            $tipo = $this->request->data['Documento']['tipo_id'];
            
            $consultaNumeroHojaRuta = $this->Hojasruta->find('first', array(
                'recursive'=>-1,
                'order'=>'Hojasruta.id DESC'
            ));
            
            if(empty($consultaNumeroHojaRuta)){
                $numeroHR = 1;
            }else{
                $numeroHR = ++$consultaNumeroHojaRuta['Hojasruta']['numero'];
            }
            
           $numeroDocumento = $this->Documento->find('first', array(
                'recursive' => -1,
                'conditions' => array(
                    'Documento.tipo_id' => $tipo,
                    'Documento.area_id' => $idArea
                )
            ));

            $nur = (empty($numeroDocumento)) ? 1 : ++$numeroDocumento['Documento']['nur'];
            $numero = (empty($numeroDocumento)) ? 1 : ++$numeroDocumento['Documento']['numero'];
            //debug($nur);die;     

            $this->Documento->create();
            $this->request->data['Documento']['numero'] = $numero;
            $this->request->data['Documento']['nur'] = $nur;
            $this->request->data['Documento']['area_id'] = $idArea;
            if ($this->Documento->save($this->request->data['Documento'])) {
                $this->Session->setFlash('Se guardo correctamente');
                $idDocGuardado = $this->Documento->getLastInsertID();
                //debug($idDocGuardado);die;
                $ultimoDocGuardado = $this->Documento->find('first', array(
                    'recursive' => -1,
                    'conditions' => array('Documento.id' => $idDocGuardado),                    
                ));
                //debug($ultimoDocGuardado);die;
                //// desde aca se registra los siguientes datos    //////
                $destino = $this->request->data['Documento']['destino_id'];
                //debug($destino);
                //$via = $this->request->data['Documento']['via'];
                //debug($via);
                $usuario = $this->request->data['Documento']['user_id'];
                //debug($user);
              
                //debug($ultimoDocGuardado);
                $ultimoCite = $ultimoDocGuardado['Documento']['cite'];
                //debug($ultimoDocGuardado);
                $ultimoUsusuario = $ultimoDocGuardado['Documento']['user_id'];
                //debug($ultimoUsusuario);
                $ultimoNur = $ultimoDocGuardado['Documento']['nur'];
                //debug($ultimonur);
                $ultimoNumero = $ultimoDocGuardado['Documento']['numero'];
                //debug($ultimonumero);
                $ultimoDestino = $ultimoDocGuardado['Documento']['destino_id'];
                //debug($ultimoDestino);
                $ultimoTipo = $ultimoDocGuardado['Documento']['tipo_id'];
                //debug($ultimoTipo);
                $ultimaReferencia = $ultimoDocGuardado['Documento']['referencia'];
                //debug($ultimaReferencia);die;
                $ultimoContenido = $ultimoDocGuardado['Documento']['contenido'];
                //debug($ultimoContenido);
                $this->request->data['Hojasruta']['documento_id'] = $idDocGuardado;
                $this->request->data['Hojasruta']['user_id'] = $ultimoUsusuario;
                $this->request->data['Hojasruta']['destino_id'] = $ultimoDestino;
                $this->request->data['Hojasruta']['numero'] = $numeroHR;
                $this->request->data['Hojasruta']['estado'] = 'Entregado';                
                
                $this->Hojasruta->create();
                if ($this->Hojasruta->save($this->request->data['Hojasruta'])) {
                    $this->Session->setFlash('Se Guardo Exitosamente');
                    $this->redirect(array('action' => 'vistaprevia', $idDocGuardado));
                } else {
                    $this->Session->setFlash('No se Pudo Registrar');
                    $this->redirect(array('action' => 'nuevo'));
                }
            }
        }

        //$usuarios = ;

        $this->set(compact('dct', 'dcp'));
        //debug($dca);        
    }

    public function bandejas() {
        $bandejas = $this->Hojasruta->find('all', array(
            'recursive' => -1,
            'limit' => 30,
            'order' => 'Hojasruta.id DESC',
        ));
        //debug($bandejas);die;
        $this->set(compact('bandejas'));
    }
    
    public function vistaprevia($idDocumento = null){
        
        $datosDocumento = $this->Documento->find('first', array(
            'recursive'=>0,
            'conditions'=>array('Documento.id'=>$idDocumento)
        ));
        
        $this->set(compact('datosDocumento'));
        //debug($datosDocumento);die;
    }
    
    public function inbox (){
       $documentos=$this->Documento->find('all',array('recursive'=>-1,'limit'=>10,'order'=>array('Documento.id DESC')));
        $this->set(compact('documentos'));
    }

}
